#pragma once

char** Spielfeld;
char Stein;
int Mein_Available_Stein;
int Gegner_Available_Stein;
int Mein_Captured_Stein;
int Gegner_Captured_Stein;
void Initialisieren();
void Stein_Position(int a, char* b);
void MuehleZustandBerechnen();
void MuehleZustandZurueckSetzen();
void think(int shm_ID);
void SpielzugBewerten();
void SpielzugWaehlen();
void SteinZustandPruefen();
void SpielzugBerechnenSpezial();
void SteinEntfernen1();
void SteinEntfernen2();
struct Knoten{
        char *Name;
        int Zustand;
        struct Knoten *Nachbar[4];
	int Muehle[2];
};
struct Spielzug{
        struct Knoten *BeginnPosition;
        struct Knoten *EndPosition;
        int Bewertung;
        int WahlHilfe;
};
struct Knoten **AlleKnoten;
struct Knoten ***Muehlelinie;
int MuehleZustand[16];
int MeinMuehleZustand[16];
int GegnerMuehleZustand[16];
struct Spielzug **AlleSpielzug;
struct Spielzug **SpielzugSpezial;
int MeinZustand;
int GegnerZustand;
int NachbarnSumme;
int NachbarvonKnoten[24];
int BestBewertung;
struct Spielzug *NaechstenSpielzug;
struct SteinEntfern{
        struct Knoten *Eins;
        struct Knoten *Zwei;
        int Bewertung;
        int WahlHilfe;
};
struct SteinEntfern *ZuSchlagendenStein;
struct SteinEntfern **AlleZSStein;

